package cn.duckerkj.image;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.log4j.Logger;


/**
 * 图片工具类
 * @author Shensg
 *
 * 2018年10月9日
 */
public class ImageUtils {
	public static Logger logger = Logger.getLogger(ImageUtils.class);
	/**
	 * 将远程图片转为byte[]
	 * @param urlStr
	 * @return
	 * @throws Exception
	 */
	public static byte[] readUrl(String urlStr,String requestMethod) { 
		InputStream inStream = null;
		ByteArrayOutputStream outStream = null;
		try {
		  //new一个URL对象 
		  URL url = new URL(urlStr);
		  //打开链接 
		  HttpURLConnection conn = (HttpURLConnection)url.openConnection(); 
		  //设置请求方式为"GET" 
		  conn.setRequestMethod(requestMethod); 
		  //超时响应时间为5秒 
		  conn.setConnectTimeout(5 * 1000); 
		  //通过输入流获取图片数据 
		  inStream = conn.getInputStream(); 
		  outStream = new ByteArrayOutputStream(); 
		  //创建一个Buffer字符串 
		  byte[] buffer = new byte[1024]; 
		  //每次读取的字符串长度，如果为-1，代表全部读取完毕 
		  int len = 0; 
		  //使用一个输入流从buffer里把数据读取出来 
		  while( (len=inStream.read(buffer)) != -1 ){ 
		   //用输出流往buffer里写入数据，中间参数代表从哪个位置开始读，len代表读取的长度 
		   outStream.write(buffer, 0, len); 
		  } 
		  //把outStream里的数据写入内存 
		  return outStream.toByteArray(); 
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			logger.error(e.getMessage());
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			logger.error(e.getMessage());
			e.printStackTrace();
		}finally {
			try {
				//关闭输入流 
				if (inStream!=null) {
					inStream.close();
				}
				if (outStream != null) {
					outStream.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				logger.error(e.getMessage());
				e.printStackTrace();
			} 
		}
		return null;
	 } 
}
